const express = require('express');
const dotenv = require('dotenv');
const mongoose = require('mongoose');

dotenv.config();

const app = express();
const port = process.env.PORT || 3000;

// 数据库连接配置
const connectDB = async () => {
  try {
    await mongoose.connect(process.env.MONGO_URI, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    });
    console.log('✅ 数据库连接成功');
  } catch (error) {
    console.error('❌ 数据库连接失败:', error.message);
    process.exit(1);
  }
};

// 连接数据库
connectDB();

// 基础路由
app.get('/', (req, res) => {
  res.json({ 
    message: '智慧社区健康管理平台 - 后端服务',
    status: '运行中',
    timestamp: new Date().toLocaleString('zh-CN')
  });
});

// 健康检查路由
app.get('/health', (req, res) => {
  res.json({ 
    status: '健康',
    database: mongoose.connection.readyState === 1 ? '已连接' : '未连接',
    uptime: process.uptime(),
    timestamp: new Date().toLocaleString('zh-CN')
  });
});

// 数据库测试路由（已清理）
app.get('/test-db', (req, res) => {
  res.json({
    message: '测试功能已清理',
    note: '测试数据和测试模型已被删除',
    databaseName: mongoose.connection.name,
    availableEndpoints: [
      'GET / - 基础信息',
      'GET /health - 健康检查'
    ]
  });
});

// 删除测试数据路由（已清理）
app.delete('/test-db', (req, res) => {
  res.json({
    message: '测试功能已清理',
    note: '测试数据和测试模型已被删除，无需重复删除'
  });
});

// 启动服务器
app.listen(port, () => {
  console.log(`🚀 服务器启动成功，运行在端口 ${port}`);
  console.log(`📍 访问地址: http://localhost:${port}`);
});

// 处理未捕获的异常
process.on('uncaughtException', (error) => {
  console.error('❌ 未捕获的异常:', error.message);
  process.exit(1);
});

process.on('unhandledRejection', (error) => {
  console.error('❌ 未处理的Promise拒绝:', error.message);
  process.exit(1);
});